/******************************************************************************
 *  _____     _____
 *  \  __\    \  __\
 *   \ \_\\    \ \_\\
 *    \  __\SS  \  __\roject
 *     \_\       \_\
 *
 * Mateusz Maciąg, Rafał Urbański
 * Komputerowe Systemy Sterowania
 *****************************************************************************/

#include "OpenLoopController.h"

// Przestrzeń nazw
namespace RafMat
{
namespace SimEngine
{

using namespace std;
using namespace SimInterface;

OpenLoopController::OpenLoopController(ISimulator &isim)
    : ControllerBase(isim, "default", "OLController")
{
}

double OpenLoopController::simulateControllerStep(double setPoint, double)
{
    // Ignoruj wartość sprzężenia zwrotnego.

    return setPoint;
}

//
// Implementacja IConfigurable
//
bool OpenLoopController::setParameter(const string& param, const string&) throw(logic_error)
{
    throw iconf_error::unrecognizedParam(*this, param);
}

SimFile::ConfigWriter& OpenLoopController::dumpParameters(SimFile::ConfigWriter& o) const
{
    o.pushBlock(SimFile::ConfigWriter::BlockController, getName());
    o.pushParam("type", "default");
    o.pushLineComment("Otwarta pętla sprzężenia.");
    o.closeBlock();
    return o;
}

}
}
